﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace monitor1
{
    public partial class Form1 : Form
    {
        private TimeSpan FTP업로드_간격 = new TimeSpan(0, 0, 5);
        private DateTime FTP업로드_시각 = DateTime.MinValue;
        private TimeSpan 메시지박스_간격 = new TimeSpan(0, 15, 0);
        private DateTime 메시지박스_시각 = DateTime.Now;
        private string FTP서버IP;
        private string FTP사용자 = "cap";
        private string FTP암호 = "zoqcnjdkagh";
        private string 학번;
        private string 유선랜서버IP = "192.168.61.22:2121";
        private string 무선랜서버IP = "172.30.9.199:2121";
        private int 업로드횟수 = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void 문자열을파일로저장(string s, string path)
        {
            FileStream fstream = new FileStream(path, FileMode.Create);
            byte[] bytes = Encoding.Default.GetBytes(s);
            fstream.Write(bytes, 0, bytes.Length);
            fstream.Close();
        }

        private void 화면캡처_업로드()
        {
            string GIF파일경로명 = Path.GetTempPath() + DateTime.Now.ToString("hhmmss") + ".gif";
            화면캡처.Capture(GIF파일경로명, 4, ImageFormat.Gif);

            string url = string.Format("ftp://{0}/{1}/{1}-{2}.gif", FTP서버IP, 학번, DateTime.Now.ToString("hhmmss"));
            string r = FtpClient.파일업로드(FTP사용자, FTP암호, GIF파일경로명, url);
            r = Regex.Replace(r, @"\.(gif)|(png)", "", RegexOptions.IgnoreCase);
            r += "\r\n최근 업로드 시각: " + DateTime.Now.ToString("HH시 mm분 ss초");
            r += "\r\n업로드 횟수: " + ++업로드횟수;
            textBox1.Text = r;
            File.Delete(GIF파일경로명);
        }

        private void 창목록정보_업로드()
        {
            string TXT파일경로명 = Path.GetTempPath() + DateTime.Now.ToString("hhmmss") + ".txt";
            문자열을파일로저장(Win32창목록정보.GetString(), TXT파일경로명);

            string url = string.Format("ftp://{0}/{1}/{1}-{2}.txt", FTP서버IP, 학번, DateTime.Now.ToString("hhmmss"));
            string r = FtpClient.파일업로드(FTP사용자, FTP암호, TXT파일경로명, url);
            r = Regex.Replace(r, @"\.(txt)", "", RegexOptions.IgnoreCase);
            r += "\n최근 업로드 시각: " + DateTime.Now.ToString("HH시 mm분 ss초");
            textBox1.Text = r;
            File.Delete(TXT파일경로명);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //Win32창목록정보.Capture();

            if (DateTime.Now.Subtract(FTP업로드_시각).CompareTo(FTP업로드_간격) >= 0) {
                FTP업로드_시각 = DateTime.Now;
                화면캡처_업로드();
                //창목록정보_업로드();
            }
            if (checkBox1.Checked) {
                if (DateTime.Now.Subtract(메시지박스_시각).CompareTo(메시지박스_간격) >= 0) {
                    메시지박스_시각 = DateTime.Now;
                    this.Activate();
                    MessageBox.Show("프로젝트 폴더를 압축해서 ftp에 제출하시오", "제출", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void btn실행시작_Click(object sender, EventArgs e)
        {            
            if (txt학번.Text.Trim().Length < 6) {
                MessageBox.Show("학번을 입력하시오", "입력", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }
            업로드횟수 = 0;
            btn실행시작.Enabled = false;

            학번 = txt학번.Text.Trim();
            FTP서버IP = (radioButton1.Checked ? 유선랜서버IP : 무선랜서버IP);
            string url = string.Format("ftp://{0}/{1}", FTP서버IP, 학번);
            FtpClient.Mkdir(FTP사용자, FTP암호, url);

            timer1.Interval = 1000;
            timer1.Enabled = true;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try {
            }
            catch (Exception) {
            }
        }

    }
}
